﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using RelatorioCEE.Classes.Aluno;

namespace RelatorioCEE
{
    public partial class frmGerenciarAlunos : Form
    {
        public int Id_Aluno = 0;
        public frmGerenciarAlunos()
        {
            InitializeComponent();
        }

        private void frmGerenciarAlunos_Load(object sender, EventArgs e)
        {
            carregarGrid();
        }

        private void btnLimparFiltro_Click(object sender, EventArgs e)
        {
            limparCamposFiltro();
        }

        private void limparCamposFiltro()
        {
            txtNomeFiltro.Text = "";
            txtTelefoneFiltro.Text = "";
            txtNomeResponsavelFiltro.Text = "";
            txtCpfFiltro.Text = "";
            txtMatriculaFiltro.Text = "";
        }

        private void btnBuscar_Click(object sender, EventArgs e)
        {
            if (txtNomeFiltro.Text.Equals(""))
            {
                errorProvider1.SetError(txtNomeFiltro, "O campo nome deve ser informado.");
            }
            AlunoDAO dao = new AlunoDAO();            
            dgvAluno.DataSource = dao.Consultar(txtNomeFiltro.Text, txtMatriculaFiltro.Text, txtTelefoneFiltro.Text, txtNomeResponsavelFiltro.Text, txtCpfFiltro.Text);
            
        }

        private void btnVoltarFiltro_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dgvAluno_CellContentClick(object sender, DataGridViewCellEventArgs e)
       { 
            //Editar
            if (e.ColumnIndex == 1)
            {
                Id_Aluno = Convert.ToInt32(dgvAluno.Rows[e.RowIndex].Cells["id_aluno"].Value);
                AlunoDAO dao = new AlunoDAO();
                AlunoDTO aluno = dao.ConsultarId(Id_Aluno);
                modoEditar();
                //Preenche os textboxes com os dados do aluno.
                txtNomeAluno.Text = aluno.Nome;
                txtTelefone.Text = aluno.Telefone;
                txtCep.Text = aluno.Cep;
                txtMatricula.Text = aluno.Matricula;
                txtNacionalidade.Text = aluno.Nacionalidade;
                txtNaturalidade.Text = aluno.Naturalidade;
                txtDataNacsimento.Text = aluno.Data_Nascimento;
                txtObservacao.Text = aluno.Observacao;
                txtCelular.Text = aluno.Celular;
                txtLogradouro.Text = aluno.Logradouro;
                txtNumero.Text = aluno.Numero;
                txtComplemento.Text = aluno.Complemento;
                txtBairro.Text = aluno.Bairro;
                txtCidade.Text = aluno.Cidade;
                txtEstado.Text = aluno.Estado;
                txtNomeR1.Text = aluno.NomeResponsavel;
                txtNomeR2.Text = aluno.NomeResponsavel2;
                txtDataAniversarioR1.Text = aluno.DataNascimentoR1;
                txtDataNascimentoR2.Text = aluno.DataNascimentoR2;
                txtTipoParentescoR1.Text = aluno.GrauParentescoR1;
                txtTipoParentescoR2.Text = aluno.GrauParentescoR2;
                txtCpfResponsavel.Text = aluno.CpfResponsavel;

            }

            //Excluir
            if (e.ColumnIndex == 0)
            {
                String nome = dgvAluno.Rows[e.RowIndex].Cells["Aluno"].Value.ToString();
                if (MessageBox.Show("Deseja excluir o Aluno " + nome + " de seu registro", "Excluir", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    try
                    {
                        Id_Aluno = Convert.ToInt32(dgvAluno.Rows[e.RowIndex].Cells["Id_Aluno"].Value);
                        AlunoDAO dao = new AlunoDAO();
                        dao.Excluir(Id_Aluno);
                        carregarGrid();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Houve uma falha ao tentar excluir os dados do aluno, " + ex.Message.ToString() + " Contate o desenvolvedor.");

                    }
                }

            }
        }

        private void modoEditar()
        {
            pnlFiltro.Visible = false;
            pnlFormularioEdit.Visible = true;
            pnlFormularioEdit.Dock = DockStyle.Left;
            lblTopo.Text = "Editar Aluno";
        }

        private void btnVoltar_Click(object sender, EventArgs e)
        {
            modoFiltro();
        }

        private void modoFiltro()
        {
            pnlFiltro.Visible = true;
            pnlFormularioEdit.Visible = false;
            pnlFormularioEdit.Dock = DockStyle.None;
            lblTopo.Text = "Gerenciar Aluno";
        }

        private void btnAtualizar_Click(object sender, EventArgs e)
        {
            //Preenche o objeto Aluno
            AlunoDTO aluno = new AlunoDTO();
            aluno.Nome = txtNomeAluno.Text;
            aluno.Cep = txtCep.Text;
            aluno.Matricula = txtMatricula.Text;
            aluno.Nacionalidade = txtNacionalidade.Text;
            aluno.Naturalidade = txtNaturalidade.Text;
            aluno.Data_Nascimento = txtDataNacsimento.Text;
            aluno.Observacao = txtObservacao.Text;
            aluno.Celular = txtCelular.Text;
            aluno.Telefone = txtTelefone.Text;
            aluno.Logradouro = txtLogradouro.Text;
            aluno.Numero = txtNumero.Text;
            aluno.Complemento = txtComplemento.Text;
            aluno.Bairro = txtBairro.Text;
            aluno.Cidade = txtCidade.Text;
            aluno.Estado = txtEstado.Text;
            aluno.NomeResponsavel = txtNomeR1.Text;
            aluno.NomeResponsavel2 = txtNomeR2.Text;
            aluno.DataNascimentoR1 = txtDataAniversarioR1.Text;
            aluno.DataNascimentoR2 = txtDataNascimentoR2.Text;
            aluno.GrauParentescoR1 = txtTipoParentescoR1.Text;
            aluno.GrauParentescoR2 = txtTipoParentescoR2.Text;
            aluno.CpfResponsavel = txtCpfResponsavel.Text;
            aluno.Id_aluno = Id_Aluno;

            try
            {
                if (Id_Aluno != 0)
                {
                    AlunoDAO dao = new AlunoDAO();
                    dao.Atualizar(aluno);
                    MessageBox.Show("Dados Atualizados com sucesso");

                }
                else
                {
                    MessageBox.Show("Não foi possível atualizar os dados. O identificador do Aluno perdeu a referência, por favor, feche o programa e tente novamente.");

                }
                Id_Aluno = 0;
               
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro ao tentar atualizar os dados. " + ex.Message.ToString() + " Entre em contato com o desenvolvedor.");
                Id_Aluno = 0;
                modoFiltro();

            }
            limparCampos();
            modoFiltro();
            carregarGrid();
            
        }

        private void carregarGrid()
        {
            AlunoDAO dao = new AlunoDAO();
            dgvAluno.DataSource = dao.Consultar();
        }

        private void btnLimpar_Click(object sender, EventArgs e)
        {
            limparCampos();
        }

        private void limparCampos()
        {
            txtNomeAluno.Text = "";
            txtTelefone.Text = "";
            txtCep.Text = "";
            txtMatricula.Text = "";
            txtNacionalidade.Text = "";
            txtNaturalidade.Text = "";
            txtDataNacsimento.Text = "";
            txtObservacao.Text = "";
            txtCelular.Text = "";
            txtLogradouro.Text = "";
            txtNumero.Text = "";
            txtComplemento.Text = "";
            txtBairro.Text = "";
            txtCidade.Text = "";
            txtEstado.Text = "";
            txtNomeR1.Text = "";
            txtNomeR2.Text = "";
            txtDataAniversarioR1.Text = "";
            txtDataNascimentoR2.Text = "";
            txtTipoParentescoR1.Text = "";
            txtTipoParentescoR2.Text = "";
            txtCpfResponsavel.Text = "";
        }






    }
}
